\chapter*{Maya + внешние рендереры = ?}

 По вполне понятным как историческим, так и другим
    причинам (например, для более простой переносимости или для
    возможности запуска на кластерах) большинство внешних рендереров
    представляют собой программы,  выполняемые из  командной строки. Если вы ничего
    и никогда, кроме Макинтоша старых версий, в своей жизни не видели, то командная
    строка выглядит приблизительно так:

  \gr{image003}
  

 Мы познакомимся с ней подробнее чуть позже, а пока
    всего лишь отметим, что подавляющее большинство рендереров
    запускаются именно из командной строки.
  

 Небольшое отступление для наших читателей,
    пришедших из мира Autodesk/discreet/Kinetix – то есть для пользователей 3dsmax. Подавляющее
    большинство ВАШИХ рендереров – а вы ими совсем не обделены, стоит
    признать – реализовано в виде плагинов к самому Максу и интерфейса
    (опять это слово!) командной строки не реализуют. Очевидно, это
    имеет множество хороших сторон и как минимум одну плохую – ваш
    рендерер так просто к Maya не
    подключишь. Впрочем, мы отвлеклись.
  

 Таким образом, для того, чтобы заставить внешний
    движок просчитать картинку, вы должны произвести некоторые действия
    (приведём некий усреднённый алгоритм работы):
  

 	\begin{enumerate}
	\item                    Во-первых, ваш экспортер, т.е. тот
    плагин, который производит экспорт сцены из Maya во внешние
    файлы,  итеративно
    обходит всю сцену и экспортирует её геометрию и материалы (обычно -
    в некий новый файл собственного формата) .\hfil\break
    
Как известно, Maya внутри
    представляет все свои данные в виде набора нод; некоторые из них
    связанны в DAG (прямой незамкнутый граф). Наш плагин должен обойти
    все ноды в этом графе, передвигаясь от предков к потомкам; для
    каждой ноды мы должны определить, с кем она связана и какой тип
    информации она представляет, и в зависимости от того, поддерживает
    ли наш внешний рендерер данную информацию – использовать её или
    пропустить. Задача обхода сцены упрощается тем, что программист
    может заранее накладывать фильтр на граф перед тем, как проводить
    экспорт – например, если ваш рендерер поддерживает только
    полигональную геометрию, то и обходить вам нужно только
    соответствующие ноды. С другой стороны, в Maya ОЧЕНЬ много
    различных типов нод и, скорее всего, вы не захотите терять
    информацию только потому, что ваш рендерер не поддерживает тот или
    иной вид геометрии или материалов. Это значит, что вашему плагину
    также придётся заниматься преобразованием информации и приведением
    её в тот вид, который подходит для вашего рендерера. Очень многие
    рендереры используют свои собственные системы описания материалов,
    гораздо более простые или сложные по сравнению с теми, которые
    используются в Maya – но все они, как минимум, от неё отличаются, и
    правильный плагин также должен понимать природу этих различий и
    уметь их обходить.
  

\item                    Итак, ваш плагин продирается сквозь
    глубины DAG, сквозь все
    эти текстуры, материалы, полигоны, NURBS, SDS,
    кривые, локаторы, источники света, камеры, объёмные примитивы,
    трансформы, анимационные кривые и ключи, деформеры, динамику и
    системы частиц, слои и глобальные переменные. Некоторые рендереры
    воспринимают в виде входных данных файл, в котором описывается как
    сама геометрия, так и те материалы, которые присоединены к ней.
    Другие, напротив, разделяют эти понятия. Некоторые рендереры умеют
    хранить несколько кадров в одном файле, другие не умеют, или умеют,
    но не рекомендуют (просто исходя из того, что геометрия и материалы
    в сцене могут быть настолько сложны, что размеры полученных нами
    файлов будут очень велики).
  

 \item                    Все эти сакральные знания спрятаны внутри
    экспортера, который, пока вы читали этот абзац, уже закончил
    экспорт и оставил на диске один или несколько файлов, которые
    передаются в рендерер для просчёта. Не суть важно, что произойдёт в
    этом случае. Мы можем просто запустить локальную копию рендерера,
    передав ей файлы и какие-то другие параметры. Абсолютно
    естественно, что в процессе рендеринга может происходить как
    препроцесинг,  так и
    постпроцессинг данных, т.е. будут выполняться какие-то скрипты,
    программы или их комбинации, которые будут преобразовывать ваши
    данные перед рендерингом или по окончании оного. Если вы работаете
    над каком-то большим проектом, то (скорее всего) вы используете
    программно-аппаратное решение (в просторечии – “ферму”, официально
    – “renderfarm”), которое позволяет
    распараллеливать ваш рендеринг на несколько машин, находящихся в
    локальной сети, будь то рабочие машины сотрудников или  специальные компьютеры,
    выделенные для подобных расчетов. В таком случае вы не будете
    вызывать ваш рендерер напрямую, а запустите другую программу,
    которая уже и начнёт раздачу подпроцессов в вашей ферме.
  

 \item                    Как результат запуска постороннего
    движка, будет получена искомая картинка. Многие современные
    рендереры имеют возможность рендерить прямо в окно Maya. Благодаря
    этому, вы получаете достаточно удобное средство для
    предварительного просмотра вашего рендеринга.
  
\end{enumerate}


 Вот, собственно, и всё. Волшебство Maya +
    умелые руки программистов в сочетании с опытом работы во всех
    встречавшихся в процессе продуктах – и мы получаем неплохую основу
    для настоящего студийного pipeline, который
    объединяет в себе сильные черты всех имеющихся на вооружении
    продуктов.
  

 Кстати, давно хотел спросить – какого рода слово
    “пайплайн”? Считается, что это очень важное сакральное слово,
    которое нужно произносить несколько раз в день, особенно глядя на
    ошибки в своих перловых скриптах или на побитые картинки, оригиналы
    которых удалил композер. Только с обретением истинного смысла этого
    слова, а также после появления в штате студии собственного
    программиста, студия может считаться непомерно крутой. 
  

 Особенно правильным считается употребление слова
    “пайплайн” в письменном виде, в особенности на форумах Render.ru и в собственном резюме. Правда, я ни разу не видел
    рекомендаций по поводу использования этого мегаслова в книжках, и
    поэтому, прежде чем написать его ещё пару тысяч раз и задрать карму
    свою и читателей в необозримые выси – всё-таки, какого рода это
    слово? Как его правильно склонять?
